﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

// 1.引用作为参数传递，节省内存，提高速度  
void sum(int a, int b, int & c) {
	c = a + b;
}
void test01() {
	int a = 10;
	int b = 20;
	int c;
	sum(a, b, c); // 30 
	cout << "sum(a, b)=" << c << endl;
}

// 2.函数返回引用类型 
int & func2() { // 不能返回局部变量的引用，栈内存在函数调用完销毁，会导致问题 
	int a = 10;
	int &b = a;
	return b;
}
int & func3() { // 可以返回静态变量的引用，或者堆内存的引用 
	static int a = 10; // static的局部变量实际放在静态区 
	int &b = a;
	return b;
}
void test02() {
	int &a = func3();
	a = 20;
	cout << "func3()=" << func3() << endl; // 20 
	func3() = 30; // 如果函数当左值，那么函数必须返回引用 
	cout << "func3()=" << func3() << endl; // 30 
}

// 3.


int main()
{
	test01();
	test02();

	system("pause");
	return EXIT_SUCCESS;
}